1985-BHV-12 S.10-11
Hilferuf!
Interrupt-Priority-Encoder und Vektorgenerator für IM2 mit dem Z80-CTC
Wer hat Erfahrung damit, wer kann mir helfen?
Seit nunmehr drei Jahren probiere ich mit verschiedenen Schaltungsvorschlägen
zu dem Thema meinen GENIE 1 IM2-fähig zu machen. Das hätte den Vorteil, daß bei
mehreren angeschlossenen Hardware-Erweiterungen, die über Interrupt von der CPU
bedient werden, das Herumsuchen des Z80 nach dem Störenfried nicht mehr nötig
ist, der Timer nicht mehr ruhig gehalten werden muß, wenn ein anderer INT-Lieferant aktiv ist, und ein echter Real-Time-Betrieb mit der Peripherie laufen
kann.
Die geeignetste Methode scheint mir über den Z80-CTC zu laufen. Die Interrupt-Signale der verschiedenen Geräte gehen an je einen CTC Zählereingang. Das
Zeitkonstanten-Register wird mit 1 geladen, so daß bei jedem Interrupt von
außen dieser an die CPU weitergegeben wird. Gleichzeitig kann der CTC einen
Vektor liefern und die verschiedenen Kanäle eines CTC sind in ihrer Priorität
gestaffelt.
Durch Hintereinander-Schalten mehrerer CTCs in der IEI-IEO-Daisy-Chain lassen
sich so biliebig viele Interrupt-Quellen anschließen. Außerdem ist solch ein
Priority-Encoder sehr flexibel. Es läßt sich programmieren, ob positive oder
negative Flanken gezählt werden sollen. Der IM2-Vektor läßt sich frei
programmieren. Durch Umprogrammieren lassen sich einzelne Interrupt-Quellen
abwürgen. Und last but not least läßt sich ein CTC-Kanal auch noch dafür
verwenden, wofür er gedacht ist.
Ich habe mir ein Board auf Lochraster-Platine aufgebaut und versuchsweise den
Timer-Interrupt an den Zählereingang des CTC gelegt und zwischen Timer und
CPU-INT-Eingang einen Soft-Ein/Aus-Schalter gelegt. Der Soft-Schalter
funktioniert auch so wie geplant.
Offensichtlich bin ich aber in Software-Entwicklung zu unterbelichtet, um dem
CTC in geeigneter Weise mitzuteilen, was ich von ihm erwarte. Auch der sehr
informative Artikel in der c't 4/85, S.92, der mit 3 Worten diese Nutzung des
CTC erwähnt, konnte nicht dazu beitragen, diesen Mißstand bei mir zu ändern.
Wer hat auf diesem Gebiet schon mal experimentiert? Wer kann mir sagen, wie
ich den CTC zu behandeln habe, um mein Ziel doch noch zu erreichen? Oder habe
ich einen Hardware-Fehler eingebaut?
Helmut Bernhardt
|